CFLAGS=-Wall -g -fpermissive
EXEC= main
OBJ=./Objeto/MotorBusqueda.o ./Objeto/ArbolB.o ./Objeto/NodoB.o ./Objeto/codigosDelta.o ./Objeto/BitReader.o ./Objeto/BitWriter.o Objeto/Stopwords.o Objeto/Parser.o Objeto/NodoABB.o Objeto/ArbolBinario.o Objeto/ArbolBB.o Objeto/Documentos.o ./Objeto/FrontCoding.o ./Objeto/ProgressBar.o ./Objeto/MonitorMemoria.o ./Objeto/Controlador.o ./Objeto/Trie.o ./Objeto/NodoTrie.o ./Objeto/IteradorIndice.o ./Objeto/IndexWriter.o ./Objeto/Merge.o ./Objeto/Configuracion.o
CC=g++

all: $(EXEC)
./Objeto/MotorBusqueda.o: Clases/MotorBusqueda.cpp Clases/MotorBusqueda.h Clases/ArbolB.h
	$(CC) $(CFLAGS) -c Clases/MotorBusqueda.cpp -o ./Objeto/MotorBusqueda.o

./Objeto/NodoB.o: Clases/NodoB.cpp Clases/NodoB.h
	$(CC) $(CFLAGS) -c Clases/NodoB.cpp -o ./Objeto/NodoB.o

./Objeto/ArbolB.o: Clases/ArbolB.cpp Clases/ArbolB.h Clases/NodoB.h Clases/Lista.h Clases/IteradorIndice.h
	$(CC) $(CFLAGS) -c Clases/ArbolB.cpp -o ./Objeto/ArbolB.o

./Objeto/BitReader.o: Clases/BitReader.cpp Clases/BitReader.h
	$(CC) $(CFLAGS) -c Clases/BitReader.cpp -o ./Objeto/BitReader.o

./Objeto/BitWriter.o: Clases/BitWriter.cpp Clases/BitWriter.h
	$(CC) $(CFLAGS) -c Clases/BitWriter.cpp -o ./Objeto/BitWriter.o

./Objeto/codigosDelta.o: Clases/codigosDelta.cpp Clases/BitReader.h Clases/BitWriter.h
	$(CC) $(CFLAGS) -c Clases/codigosDelta.cpp -o ./Objeto/codigosDelta.o
	
./Objeto/IndexWriter.o: Clases/IndexWriter.cpp Clases/IndexWriter.h Clases/IndexWriter.h Clases/Registros.h Clases/BitWriter.h Clases/codigosDelta.h Clases/FrontCoding.h Clases/Configuracion.h Clases/Constantes.h
	$(CC) $(CFLAGS) -c Clases/IndexWriter.cpp -o ./Objeto/IndexWriter.o

./Objeto/IteradorIndice.o: Clases/IteradorIndice.cpp Clases/IteradorIndice.h Clases/Lista.h Clases/Nodo.h Clases/IteradorLista.h Clases/ElementoInexistenteException.h Clases/Registros.h Clases/codigosDelta.h Clases/BitReader.h Clases/Configuracion.h Clases/Constantes.h
	$(CC) $(CFLAGS) -c Clases/IteradorIndice.cpp -o ./Objeto/IteradorIndice.o

./Objeto/Stopwords.o: Clases/Stopwords.cpp Clases/Stopwords.h Clases/Lista.h Clases/Nodo.h Clases/IteradorLista.h Clases/ElementoInexistenteException.h Clases/Trie.h
	$(CC) $(CFLAGS) -c Clases/Stopwords.cpp -o ./Objeto/Stopwords.o

./Objeto/Parser.o: Clases/Parser.cpp Clases/Parser.h
	$(CC) $(CFLAGS) -c Clases/Parser.cpp -o ./Objeto/Parser.o 

Objeto/NodoABB.o: Clases/NodoABB.cpp Clases/NodoABB.h Clases/Lista.h Clases/Nodo.h Clases/IteradorLista.h Clases/ElementoInexistenteException.h Clases/MonitorMemoria.h Clases/Registros.h
	$(CC) $(CFLAGS) -c Clases/NodoABB.cpp -o ./Objeto/NodoABB.o

Objeto/ArbolBinario.o: Clases/ArbolBinario.cpp Clases/ArbolBinario.h Clases/NodoABB.h Clases/MonitorMemoria.h
	$(CC) $(CFLAGS) -c Clases/ArbolBinario.cpp -o ./Objeto/ArbolBinario.o
	
Objeto/ArbolBB.o: Clases/ArbolBB.cpp Clases/ArbolBB.h
	$(CC) $(CFLAGS) -c Clases/ArbolBB.cpp -o ./Objeto/ArbolBB.o
	
./Objeto/Documentos.o: Clases/Documentos.cpp Clases/Documentos.h Clases/Lista.h Clases/Nodo.h Clases/IteradorLista.h Clases/ElementoInexistenteException.h Clases/Configuracion.h Clases/Constantes.h
	$(CC) $(CFLAGS) -c Clases/Documentos.cpp -o ./Objeto/Documentos.o

./Objeto/FrontCoding.o: Clases/FrontCoding.cpp Clases/FrontCoding.h Clases/Lista.h Clases/Nodo.h Clases/IteradorLista.h Clases/ElementoInexistenteException.h
	$(CC) $(CFLAGS) -c Clases/FrontCoding.cpp -o ./Objeto/FrontCoding.o
	
./Objeto/ProgressBar.o: Clases/ProgressBar.cpp Clases/ProgressBar.h
	$(CC) $(CFLAGS) -c Clases/ProgressBar.cpp -o ./Objeto/ProgressBar.o
	
./Objeto/MonitorMemoria.o: Clases/MonitorMemoria.cpp Clases/MonitorMemoria.h
	$(CC) $(CFLAGS) -c Clases/MonitorMemoria.cpp -o ./Objeto/MonitorMemoria.o

./Objeto/NodoTrie.o: Clases/NodoTrie.cpp Clases/NodoTrie.h
	$(CC) $(CFLAGS) -c Clases/NodoTrie.cpp -o ./Objeto/NodoTrie.o
	
./Objeto/Trie.o: Clases/Trie.cpp Clases/Trie.h Clases/NodoTrie.h
	$(CC) $(CFLAGS) -c Clases/Trie.cpp -o ./Objeto/Trie.o
	
./Objeto/Merge.o: Clases/Merge.cpp Clases/Merge.h Clases/IndexWriter.h ./Clases/Lista.h ./Clases/IteradorLista.h ./Clases/Nodo.h ./Clases/ElementoInexistenteException.h ./Clases/Registros.h ./Clases/IteradorIndice.h
	$(CC) $(CFLAGS) -c Clases/Merge.cpp -o ./Objeto/Merge.o

./Objeto/Configuracion.o: Clases/Configuracion.cpp Clases/Configuracion.h
	$(CC) $(CFLAGS) -c Clases/Configuracion.cpp -o ./Objeto/Configuracion.o
	
./Objeto/Controlador.o: Clases/Controlador.cpp Clases/Controlador.h Clases/MonitorMemoria.h Clases/ProgressBar.h Clases/FrontCoding.h Clases/Documentos.h Clases/ArbolBinario.h Clases/NodoABB.h Clases/Parser.h Clases/Stopwords.h Clases/BitWriter.h ./Clases/IteradorIndice.h Clases/Configuracion.h 
	$(CC) $(CFLAGS) -c Clases/Controlador.cpp -o ./Objeto/Controlador.o 

$(EXEC): $(OBJ) main.cpp
	$(CC) $(CFLAGS) $(OBJ) main.cpp -o $(EXEC)


#Server-----------------------------------------------------------------------------------------------------------------------------------
server: $(OBJ) server.cpp Clases/MotorBusqueda.h
	$(CC) $(CFLAGS) $(OBJ) server.cpp -o server

#CLEAN-------------------------------------------------------------------------------------------------------------------------------------
clean:
	rm -f $(EXEC) server ./Objeto/*.o
	
# make main & server
all:
	make $(EXEC) server
	
# clean all & make main & server
remake:
	make clean $(EXEC) server
